home *** CD-ROM | disk | FTP | other *** search
/ PsL Monthly 1993 December / PSL Monthly Shareware CD-ROM (December 1993).iso / prgmming / dos / pascal / hash.com / TESTHASH.PAS < prev   
Encoding:
Pascal/Delphi Source File  |  1989-09-26  |  1.9 KB  |  85 lines

  1. Program TestHashTable;
  2.  
  3. Uses HashTabl,GenTable,Crt;
  4.  
  5. Var
  6.   SymTab : SymbolTable;
  7.   KeyStr : String;
  8.   T      : Text;
  9.   Dupe   : Boolean;
  10.   Exist  : Boolean;
  11.   I      : Word;
  12.   DC     : Word;
  13.   Num    : Word;
  14.   Data   : DataRec;
  15.   Temp   : HPtr;
  16.  
  17. Begin
  18.   DC := 0;
  19.   Num := 0;
  20.   ClrScr;
  21.   SymTab.Create;
  22.   Assign (T,'Test.Dat');
  23.   ReSet (T);
  24.   While Not Eof(T) do
  25.     Begin
  26.       ReadLn (T,KeyStr);
  27.       Num := Num + 1;
  28.       Data.Symb := KeyStr;
  29.       Data.Addr := Num;
  30.       Data.Line := Num;
  31.  
  32.       SymTab.Enter (Data.Symb,Data,Dupe);
  33.  
  34.       If Dupe Then DC := DC + 1;
  35.  
  36.     End;
  37.   For I := 0 to MaxEntry-1 do
  38.     If SymTab.Used[I] Then
  39.       Begin
  40.         Write (I);
  41.         GoToXY (10,WhereY);
  42.         Temp := SymTab.Entry[I];
  43.         Temp^.Get_Data (Data,SizeOf(Data));
  44. {
  45.         Manipulate/Use Data;
  46. }
  47.         While Temp <> Nil do
  48.           Begin
  49.             Write (' ',Temp^.Key);
  50.             Temp := Temp^.Next
  51.           End;
  52.         WriteLn
  53.       End;
  54.   WriteLn;
  55.   WriteLn (Num,' Keys were read. ',DC,' Duplicates were encountered.');
  56.   KeyStr := '';
  57.   While KeyStr <> '0' do
  58.     Begin
  59.       Write ('Enter Key to be retrieved [0 to quit] : ');
  60.       ReadLn (KeyStr);
  61.       If KeyStr <> '0' Then
  62.         Begin
  63.           SymTab.Retrieve (KeyStr,Exist,Data);
  64.           If Exist Then WriteLn ('Found!')
  65.           Else WriteLn ('Not Found.');
  66.         End
  67.     End;
  68.   Reset (T);
  69.   Exist := True;
  70.   Write ('Press <Return>/<Enter> to Commence Final {EXHAUSTIVE} Key Test.');
  71.   ReadLn;
  72.   While (Not Eof (T)) and (Exist) do
  73.     Begin
  74.       ReadLn (T,KeyStr);
  75.       SymTab.Retrieve (KeyStr,Exist,Data)
  76.     End;
  77.   If Exist Then WriteLn ('All Entries Tested and Confirmed!!!')
  78.   Else WriteLn ('Could Not Find Entry ',KeyStr,' Which SHOULD be found!');
  79.   Write ('Press <Return>/<Enter> to Continue...');
  80.   ReadLn;
  81.   Close (T);
  82.   SymTab.Destroy
  83. End.
  84.  
  85.